package com.freshman_registration.mapper;

import com.freshman_registration.pojo.PaymentRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface PaymentRecordMapper {
    /*
     **/
    int addPaymentRecord(PaymentRecord paymentRecord);
    int initPaymentRecords(@Param("itemId") Integer itemId);
    List<PaymentRecord> getStudentRecords(String studentId);
    PaymentRecord checkIfPaid(Integer itemId, String studentId);

    /**
     * 查询所有缴费记录，关联学生信息和缴费项目信息
     * @param studentId 学生学号，用于筛选，可为null
     * @param paymentStatus 缴费状态，用于筛选，可为null
     * @param startDate 开始日期，用于筛选，可为null
     * @param endDate 结束日期，用于筛选，可为null
     *                 项目类型，用于筛选，可为null
     * @return 缴费记录列表
     */
    List<PaymentRecord> selectAllPaymentRecords(@Param("studentId") String studentId,
                                                @Param("itemId") Integer itemId,
                                                @Param("paymentStatus") String paymentStatus,
                                                @Param("startDate") String startDate,
                                                @Param("endDate") String endDate,
                                                @Param("itemName") String itemName,
                                                @Param("itemType") String itemType);

    /**
     * 根据ID查询缴费记录
     * @param recordId 缴费记录ID
     * @return 缴费记录
     */
    PaymentRecord selectByPrimaryKey(Integer recordId);


    //根据学号和项目ID查询缴费记录
    PaymentRecord selectByStudentIdAndItemId(@Param("studentId") String studentId, @Param("itemId") Integer itemId);


    int batchUpdateStatus(
            @Param("record") PaymentRecord record,
            @Param("itemIds") List<Integer> itemIds);
}